const app = getApp()

Page({
  data: {
    userInfo: {},
    hasUserInfo: false,
    canIUse: wx.canIUse('button.open-type.getUserInfo'),
    canIUseGetUserProfile: false,
    canIUseOpenData: wx.canIUse('open-data.type.userAvatarUrl') && wx.canIUse('open-data.type.userNickName'),
    healthData: {
      recentRecords: [],
      reminders: [],
      todayTips: '保持良好的作息习惯，每天至少喝8杯水'
    },
    familyMembers: [],
    activeTab: 0,
    loading: false
  },
  
  onLoad() {
    if (wx.getUserProfile) {
      this.setData({
        canIUseGetUserProfile: true
      })
    }
    
    // 检查登录状态
    const token = wx.getStorageSync('token');
    if (!token) {
      wx.redirectTo({
        url: '/pages/login/login'
      });
      return;
    }
    
    this.loadFamilyMembers();
  },
  
  onShow() {
    // 每次页面显示时刷新数据
    this.loadFamilyMembers();
    
    // 如果已有选中的成员，重新加载该成员的健康数据
    if (this.data.familyMembers.length > 0 && 
        this.data.activeTab >= 0 && 
        this.data.activeTab < this.data.familyMembers.length) {
      const memberId = this.data.familyMembers[this.data.activeTab].id;
      console.log('页面显示，重新加载当前选中成员的健康数据:', memberId);
      this.loadHealthData(memberId);
    }
  },

  getUserProfile(e) {
    wx.getUserProfile({
      desc: '用于完善会员资料',
      success: (res) => {
        this.setData({
          userInfo: res.userInfo,
          hasUserInfo: true
        })
      }
    })
  },

  loadFamilyMembers() {
    const token = wx.getStorageSync('token');
    if (!token) {
      wx.redirectTo({
        url: '/pages/login/login'
      });
      return;
    }
    
    this.setData({ loading: true });
    console.log('开始加载家庭成员数据...');
    
    // 从服务器获取家庭成员数据
    wx.request({
      url: 'http://localhost:3000/api/members',
      method: 'GET',
      header: {
        'Authorization': `Bearer ${token}`
      },
      success: (res) => {
        console.log('获取家庭成员响应:', res.data);
        if (res.data.success) {
          const members = res.data.data.members || [];
          console.log('获取到家庭成员数量:', members.length);
          
          // 更新当前选中的成员索引，确保不超出范围
          let currentActiveTab = this.data.activeTab;
          if (currentActiveTab >= members.length) {
            currentActiveTab = members.length > 0 ? 0 : null;
          }
          
          this.setData({
            familyMembers: members,
            loading: false,
            activeTab: currentActiveTab
          });
          
          // 如果有家庭成员，加载选中成员的健康数据
          if (members.length > 0 && currentActiveTab !== null) {
            const selectedMemberId = members[currentActiveTab].id;
            console.log('加载家庭成员健康数据:', members[currentActiveTab].name, '(ID:', selectedMemberId, ')');
            this.loadHealthData(selectedMemberId);
          } else {
            // 清空健康数据
            this.setData({
              'healthData.recentRecords': [],
              'healthData.reminders': []
            });
          }
        } else {
          console.error('获取家庭成员失败:', res.data.message);
          this.setData({ loading: false });
          wx.showToast({
            title: res.data.message || '获取成员数据失败',
            icon: 'none'
          });
        }
      },
      fail: (err) => {
        console.error('请求失败:', err);
        this.setData({ loading: false });
        wx.showToast({
          title: '网络错误，请稍后重试',
          icon: 'none'
        });
      }
    });
  },

  loadHealthData(memberId) {
    if (!memberId) return;
    
    console.log('加载成员健康数据, ID:', memberId);
    
    const token = wx.getStorageSync('token');
    if (!token) {
      wx.redirectTo({
        url: '/pages/login/login'
      });
      return;
    }
    
    console.log('正在加载成员健康记录，成员ID:', memberId);
    
    // 先清空当前健康数据，避免显示旧数据
    this.setData({
      'healthData.recentRecords': [],
      'healthData.reminders': []
    });
    
    // 获取健康记录
    console.log(`发起请求: GET ${`http://localhost:3000/api/records?memberId=${memberId}&limit=5`}`);
    
    wx.request({
      url: `http://localhost:3000/api/records?memberId=${memberId}&limit=5`,
      method: 'GET',
      header: {
        'Authorization': `Bearer ${token}`
      },
      success: (res) => {
        console.log(`成员[${memberId}]健康记录响应:`, res);
        
        if (res.data.success) {
          const records = res.data.data.records || [];
          console.log(`成员[${memberId}]获取到健康记录数量:`, records.length);
          console.log(`成员[${memberId}]健康记录数据:`, records);
          
          // 格式化健康记录，添加日期格式化
          const formattedRecords = records.map(record => {
            let date = '未知日期';
            if (record.record_time) {
              const recordDate = new Date(record.record_time);
              date = `${recordDate.getFullYear()}-${String(recordDate.getMonth() + 1).padStart(2, '0')}-${String(recordDate.getDate()).padStart(2, '0')}`;
            }
            
            return {
              ...record,
              date: date
            };
          });
          
          this.setData({
            'healthData.recentRecords': formattedRecords
          });
        } else {
          console.error(`成员[${memberId}]获取健康记录失败:`, res.data.message);
          wx.showToast({
            title: '获取健康记录失败',
            icon: 'none'
          });
        }
      },
      fail: (err) => {
        console.error(`成员[${memberId}]请求健康记录失败:`, err);
        wx.showToast({
          title: '网络错误，请稍后重试',
          icon: 'none'
        });
      },
      complete: () => {
        console.log(`成员[${memberId}]健康记录请求完成`);
      }
    });
    
    // 获取健康提醒
    wx.request({
      url: `http://localhost:3000/api/reminders?memberId=${memberId}&limit=5&status=active`,
      method: 'GET',
      header: {
        'Authorization': `Bearer ${token}`
      },
      success: (res) => {
        if (res.data.success) {
          console.log('获取到健康提醒数量:', (res.data.data.reminders || []).length);
          
          // 格式化提醒数据
          const reminders = (res.data.data.reminders || []).map(item => {
            return {
              id: item.id,
              title: item.title,
              content: item.content || '',
              time: item.time || '00:00',
              date: item.date || '',
              active: item.active
            };
          });
          
          this.setData({
            'healthData.reminders': reminders
          });
        } else {
          console.error('获取健康提醒失败:', res.data.message);
        }
      },
      fail: (err) => {
        console.error('请求健康提醒失败:', err);
      }
    });
  },

  switchTab(e) {
    const index = parseInt(e.currentTarget.dataset.index);
    console.log('切换标签，索引:', index, '当前激活索引:', this.data.activeTab);
    
    if (index === this.data.activeTab) {
      console.log('已经是当前选中标签，不进行切换');
      return;
    }
    
    // 更新当前选中的标签索引
    this.setData({
      activeTab: index
    });
    
    // 根据选中的家庭成员加载相应的健康数据
    if (this.data.familyMembers.length > 0 && index < this.data.familyMembers.length) {
      const memberId = this.data.familyMembers[index].id;
      console.log('切换到家庭成员:', this.data.familyMembers[index].name, '(ID:', memberId, ')');
      console.log('当前家庭成员列表:', this.data.familyMembers);
      
      // 显示提示消息
      wx.showToast({
        title: `正在加载 ${this.data.familyMembers[index].name} 的健康数据`,
        icon: 'none',
        duration: 2000
      });
      
      // 强制使用setTimeout让UI先更新，再发起请求
      setTimeout(() => {
        this.loadHealthData(memberId);
      }, 100);
    } else {
      console.error('索引超出范围或家庭成员列表为空:', index, this.data.familyMembers.length);
    }
  },

  addFamilyMember() {
    wx.navigateTo({
      url: '/pages/members/add/add'
    });
  },

  navigateToMemberDetail(e) {
    const memberId = e.currentTarget.dataset.id;
    
    // 找到点击的成员在数组中的索引
    const index = this.data.familyMembers.findIndex(member => member.id === memberId);
    
    // 如果找到了对应成员，更新activeTab并加载其健康数据
    if (index !== -1) {
      // 更新当前选中的标签索引
      this.setData({
        activeTab: index
      });
      
      // 显示提示消息
      wx.showToast({
        title: `正在加载 ${this.data.familyMembers[index].name} 的健康数据`,
        icon: 'none',
        duration: 2000
      });
      
      // 加载对应成员的健康数据
      console.log(`正在为成员 ${this.data.familyMembers[index].name} (ID: ${memberId}) 加载健康数据`);
      this.loadHealthData(memberId);
    }
    
    // 然后导航到成员详情页
    wx.navigateTo({
      url: `/pages/members/detail/detail?id=${memberId}`
    });
  },

  navigateToRecords(e) {
    // 获取成员ID，如果没有传递则使用当前选中的成员
    let memberId = e.currentTarget.dataset.memberId;
    if (!memberId && this.data.familyMembers.length > 0 && this.data.activeTab >= 0) {
      memberId = this.data.familyMembers[this.data.activeTab].id;
    }
    
    console.log('点击查看更多健康记录，成员ID:', memberId);
    
    if (memberId) {
      // 使用switchTab而不是navigateTo，因为records是一个tabBar页面
      wx.switchTab({
        url: '/pages/records/records',
        success: () => {
          // 将成员ID存储到全局数据或本地存储，以便records页面可以使用
          wx.setStorageSync('selectedMemberId', memberId);
          
          // 使用事件通道通知records页面
          const eventChannel = this.getOpenerEventChannel();
          if (eventChannel) {
            eventChannel.emit('memberSelected', { memberId: memberId });
          }
        }
      });
    } else {
      wx.switchTab({
        url: '/pages/records/records'
      });
    }
  },

  navigateToReminders(e) {
    // 获取成员ID，如果没有传递则使用当前选中的成员
    let memberId = e.currentTarget.dataset.memberId;
    if (!memberId && this.data.familyMembers.length > 0 && this.data.activeTab >= 0) {
      memberId = this.data.familyMembers[this.data.activeTab].id;
    }
    
    console.log('点击设置提醒，成员ID:', memberId);
    
    if (memberId) {
      wx.navigateTo({
        url: `/pages/reminders/add/add?memberId=${memberId}`
      });
    } else {
      wx.navigateTo({
        url: '/pages/reminders/reminders'
      });
    }
  },

  navigateToKnowledge() {
    wx.navigateTo({
      url: '/pages/knowledge/knowledge'
    })
  },
  
  navigateToTrends() {
    wx.navigateTo({
      url: '/pages/trends/trends'
    })
  }
}) 